void memcpy(u8int* destination, u8int* source, u32int length);
void memset(u8int* destination, u8int value, u32int length);
void memcpy16(u16int* destination, u16int* source, u32int length);
void memset16(u16int* destination, u16int value, u32int length);
int memcmp(void* ptr1, void* ptr2, int size);
int max(int a, int b);
int min(int a, int b);
int strlen(char* str);
int strcmp(char* str1, char* str2);
char* strcpy(char* destination, char* source);
char* strcat(char* destination, char* source);
char* strrev(char* source);
char* itoa(u32int val, int base);
int _atoi(char* str);
u32int from_linear(u32int seg, u32int linear);
u32int to_linear(u32int seg, u32int off);

extern void outb(u16int port, u8int value);
extern void outw(u16int port, u16int value);
extern void outd(u16int port, u32int value);
extern u8int inb(u16int port);
extern u16int inw(u16int port);
extern u32int ind(u16int port);
extern u32int get_esp();

static char itoa_buffer[32];
